import { ErrorMessageMode } from '#/request';

/** 升级程序选项 */
export type UpgraderOptions = {
  /** 弹窗层级 */
  zIndex?: number;
  /** 标题 */
  title?: string;
  /** 应用信息 */
  appInfo?: AppInfo;
  /** 错误消息提示模式 */
  errorMessageMode?: ErrorMessageMode;
};
/** 升级程序选项-内部 */
export type UpgraderOptionsInternal = UpgraderOptions & {
  /** 显示窗口 */
  show?: boolean;
  /** 已检测 */
  checked?: boolean;
  /** 升级信息 */
  upgrade?: UpgradeInfo;
  /** 显示进度 */
  showProgress?: boolean;
};

/** 应用信息 */
export interface AppInfo {
  /** 应用编号 */
  AppId?: string;
  /** 应用名称 */
  Name?: string;
  /** 应用描述 */
  Descript?: string;
  /** 版本名称 */
  Version?: string;
  /** 版本号 */
  VersionCode?: string;
  /** 作者 */
  Author?: string;
  /** 电子邮箱 */
  Email?: string;
  /** 客户端平台，值域为：ios、android、mac（3.1.10+）、windows（3.1.10+）、linux（3.1.10+） */
  Platform?: string;
}

/** 升级信息 */
export interface UpgradeInfo {
  /** 需要升级 */
  need?: boolean;
  /** 强制升级 */
  force?: boolean;
  /** 静默升级 */
  silent?: boolean;
  /** Wgt(增量)升级 */
  wgt?: boolean;
  /** 大小 */
  size?: number;
  /** 版本名称 */
  version?: string;
  /** 版本号 */
  versionCode?: string;
  /** 作者 */
  author?: string;
  /** 电子邮箱 */
  email?: string;
  /** URL */
  url?: string;
  /** 标题 */
  title?: string;
  /** 内容 */
  content?: string;
  /** 是否请求AppStore链接 */
  appStoreLink?: boolean;
}

/** 升级检测 */
export interface UpgradeCheck {
  /** 应用编码 */
  Code: string;
  /** 应用平台 */
  Platform: string;
}

/** 升级组件参数 */
export const upgradeProps = {
  /** 选择器 */
  selector: { type: String, default: '' },
  /** 应用信息 */
  appInfo: {
    type: Object as PropType<AppInfo>,
    default: null,
  },
  /** 立即检测 */
  immediate: { type: Boolean, default: false },
};
